<?php
//命名空间
namespace app\common\controller;

//继承tp的控制器
use think\Controller;

class Backend extends Controller
{
    //设置全局属性,不需要登录
    protected $NoLogin = [];

    //构造函数
    public function __construct()
    {
        //继承父级
        parent::__construct();
        $this->AdminModel = model('Admin');
        $this->ConfigModel = model('Config');

        //首先去除数组中为空的元素
        $this->NoLogin = array_filter($this->NoLogin);

        //如果NoLogin为空
        if (empty($this->NoLogin)) {
            //需要登录
            $this->isLogin();
        } else {
            //所有方法
            $all = '*';

            //获取当前访问的方法
            $action =  $this->request->action();

            if (!in_array($all, $this->NoLogin) && !in_array($action, $this->NoLogin)) {
                //需要登录
                $this->isLogin();
            }
        }

        $this->system();
    }
    // //判断是否登录
    public function isLogin()
    {
        //获取session
        $LoginAdmin = session('LoginAdmin');

        //如果session不为空
        if (!empty($LoginAdmin)) {
            $id = isset($LoginAdmin['id']) ? $LoginAdmin['id'] : 0;

            //拿到session里面的id去数据库里面查询是否有该管理员
            $admin = $this->AdminModel->find($id);

            //查询不到该管理员
            if (!$admin) {
                $this->error('非法登录', url('admin/index/login'));
                exit;
            }

            //验证是否禁用
            if ($admin['state'] != 1) {
                session('LoginAdmin', null);
                $this->error('该管理员已禁用,请重新登录', url('admin/index/login'));
            }

            //设置所有的控制器都能使用
            $this->loginAdmin = $admin;

            //全局赋值
            $this->assign('LoginAdmin', $admin);
            $this->assign('time', time());
        } else {
            $this->error('请登录', url('admin/index/login'));
            exit;
        }
    }

    //查询
    public function system()
    {
        //查出所有的数据
        $system = $this->ConfigModel->select();

        //定义一个新的数组
        $result = [];
        foreach ($system as $key => $value) {
            $result[$value['key']] = $value['value'];
        }
        $this->assign('system', $result);
    }

    /**
     * 返回数据的方法
     * @access protected
     * @param mixed  $msg    提示信息
     * @param mixed  $data   返回的数据
     * @param mixed  $code   返回的状态码
     * @return void
     */
    public function back($msg = '未知信息', $data = null, $code = 1)
    {
        //一般接口的数据类型是json xml 把返回数据封装一个数组

        $result = [
            'msg' => $msg,
            'data' => $data,
            'code' => $code,
        ];

        //数据转成json
        echo json_encode($result);
        exit;
    }

    /**
     * 操作失败跳转的快捷方法
     * @access protected
     * @param mixed  $msg    提示信息
     * @param mixed  $data   返回的数据
     * @param mixed  $code   返回的状态码
     * @return void
     */

    public function warning($msg = '未知信息', $data = null, $code = 0)
    {
        $this->back($msg, $data, $code);
        exit;
    }

    /**
     * 操作成功跳转的快捷方法
     * @access protected
     * @param mixed  $msg    提示信息
     * @param mixed  $data   返回的数据
     * @param mixed  $code   返回的状态码
     * @return void
     */
    public function finish($msg = '未知信息', $data = null, $code = 1)
    {
        $this->back($msg, $data, $code);
        exit;
    }
}
